home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / share / pyshared / CommandNotFound / util.py < prev   
Text File  |  2008-10-15  |  2KB  |  57 lines

  1. # (c) Zygmunt Krynicki 2008
  2. # Licensed under GPL, see COPYING for the whole text
  3.  
  4. import sys
  5.  
  6. def no_gettext_for_you(message):
  7.     """This function is used instead of gettext when there are some locale problems"""
  8.     return message
  9.  
  10. def setup_locale():
  11.     import locale
  12.     try:
  13.         import gettext
  14.         locale.getpreferredencoding()
  15.         gettext.bindtextdomain("command-not-found", "/usr/share/locale")
  16.         gettext.textdomain("command-not-found")
  17.         gettext.install("command-not-found", unicode=True)
  18.         return gettext.lgettext
  19.     except locale.Error:
  20.         #print "Warning: python was unable to setup locale!"
  21.         #print "Internationalizatio features will not be enabled."
  22.         return no_gettext_for_you
  23.  
  24. _ = gettext_wrapper = setup_locale()
  25.  
  26. def crash_guard(callback, bug_report_url, version):
  27.     """ Calls callback and catches all exceptions.
  28.     When something bad happens prints a long error message
  29.     with bug report information and exits the program"""
  30.     try:
  31.         try:
  32.             callback()
  33.         except Exception, ex:
  34.             print >>sys.stderr, _("Sorry, command-not-found has crashed! Please file a bug report at:")
  35.             print >>sys.stderr, bug_report_url
  36.             print >>sys.stderr, _("Please include the following information with the report:")
  37.             print >>sys.stderr
  38.             print >>sys.stderr, _("command-not-found version: %s") % version
  39.             print >>sys.stderr, _("Python version: %d.%d.%d %s %d") % sys.version_info
  40.             try:
  41.                 import subprocess
  42.                 subprocess.call(["lsb_release", "-i", "-d", "-r", "-c"], stdout=sys.stderr)
  43.             except (ImportError, OSError):
  44.                 pass
  45.             print >>sys.stderr, _("Exception information:")
  46.             print >>sys.stderr
  47.             print >>sys.stderr, ex
  48.             try:
  49.                 import traceback
  50.                 traceback.print_exc()
  51.             except ImportError:
  52.                 pass
  53.     finally:
  54.         sys.exit(127)
  55.  
  56. __all__ = ["gettext_wrapper", "crash_guard"]
  57.